using Microsoft.Extensions.DependencyInjection;

namespace System;

public static class ServiceProviderExtensions
{
    /// <summary>
    /// 返回服务的 <see cref="Lazy{T}"/> 访问器，这样您就可以在服务实现中访问生命周期较短的服务，而无需存储服务提供者（这是一种反模式）。
    /// </summary>
    /// <typeparam name="T">所需服务的类型。</typeparam>
    public static Lazy<T> GetLazyService<T>(this IServiceProvider serviceProvider) =>
        new(serviceProvider.GetRequiredService<T>);
}
